{ Esta unidad se encarga de guardar las opciones del programa
  Todo: En Construcción
  Codigo adaptado de: http://wiki.freepascal.org/Multiplatform_Programming_Guide/es

  Copyright (C) 2010 Jorge Turiel <contact>

  This source is free software; you can redistribute it and/or modify it under
  the terms of the GNU General Public License as published by the Free
  Software Foundation; either version 2 of the License, or (at your option)
  any later version.

  This code is distributed in the hope that it will be useful, but WITHOUT ANY
  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
  details.

  A copy of the GNU General Public License is available on the World Wide Web
  at <http://www.gnu.org/copyleft/gpl.html>. You can also obtain it by writing
  to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  MA 02111-1307, USA.
}

unit uAppSettings;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils,Forms,IniFiles;

  Type TConfiguracion = Class (TObject)
    Private
      ConfigFilePath : String;
    Public
      MiDirectorio : String; //Contiene la ruta dónde está ejecutandose el prg.
      Constructor Create (Cargar:Boolean);
      destructor Destroy;override;
      Procedure ReadFromFile;
      Procedure SaveToFile;



  end;
  Var
     Configuracion : TConfiguracion;

implementation
uses uComun;
Constructor TConfiguracion.Create(Cargar:Boolean);
Begin
  {$ifdef win32}
   MiDirectorio := ExtractFilePath(Application.EXEName);
   ConfigFilePath := ExtractFilePath(Application.EXEName) + 'config.ini';

  {$endif}
   {$ifdef Unix}
   MiDirectorio := GetAppConfigFile(False);
   ConfigFilePath := GetAppConfigFile(False) + '.conf';
   {$endif}
  If Cargar Then
  Begin
    ReadFromFile;
  end;

end;
Destructor TConfiguracion.Destroy;
Begin
   //SaveToFile;
   Inherited Destroy;
end;
{ TODO -cPosicion Ventanas : Los valores de las posiciones iniciales deben cambiar según el tamaño de la pantalla }
Procedure TConfiguracion.ReadFromFile;
Var
   MyFile: TIniFile;
Begin
   //Todo: ReadFromFile en construcción
   MyFile := TiniFile.Create(ConfigFilePath);
   With MyFile Do
   Begin
        //Posicion ventana del editor
        EditorPos.Arriba:=ReadInteger('Editor','Arriba',10);
        EditorPos.Izquierda:=ReadInteger('Editor','Izquierda',10);
        EditorPos.Alto:=ReadInteger('Editor','Alto',400);
        EditorPos.Ancho:=ReadInteger('Editor','Ancho',640);

        //Posición de la Ventana Explorador
        ExploradorPos.Arriba:=ReadInteger('Explorador','Arriba',10);
        ExploradorPos.Izquierda:=ReadInteger('Explorador','Izquierda',10);
        ExploradorPos.Alto:=ReadInteger('Explorador','Alto',400);
        ExploradorPos.Ancho:=ReadInteger('Explorador','Ancho',640);

        //Posición de la ventana de Mensajes
        MensajesPos.Arriba:=ReadInteger('Mensajes','Arriba',640);
        MensajesPos.Izquierda:=ReadInteger('Mensajes','Izquierda',10);
        MensajesPos.Alto:=ReadInteger('Mensajes','Alto',400);
        MensajesPos.Ancho:=ReadInteger('Mensajes','Ancho',400);

        //Ruta del arduino
        Arduino := ReadString ('Arduino','Ruta','');

        //Ventana Crear Proyecto
        AnchoCol:= ReadInteger ('CreaProyecto','AnchoCol',500);
   end;
end;
Procedure TConfiguracion.SaveToFile;
var
   MyFile: TIniFile;
begin
   MyFile := TIniFile.Create(ConfigFilePath);
try
    With MyFile DO
    Begin
         //Posición ventana Editor
         WriteInteger('Editor','Arriba',Editorpos.Arriba);
         WriteInteger('Editor','Izquierda',Editorpos.Izquierda);
         WriteInteger('Editor','Ancho',Editorpos.Ancho);
         WriteInteger('Editor','Alto',EditorPos.Alto);

         //Posicion Ventana explorador
         WriteInteger('Explorador','Arriba',ExploradorPos.Arriba);
         WriteInteger('Explorador','Izquierda',ExploradorPos.Izquierda);
         WriteInteger('Explorador','Ancho',ExploradorPos.Ancho);
         WriteInteger('Editor','Alto',ExploradorPos.Alto);

         //Posicion Ventana  mensajes
         WriteInteger('Mensajes','Arriba',MensajesPos.Arriba);
         WriteInteger('Mensajes','Izquierda',MensajesPos.Izquierda);
         WriteInteger('Mensajes','Ancho',MensajesPos.Ancho);
         WriteInteger('Mensajes','Alto',MensajesPos.Alto);

         //Ruta del arduino
         WriteString ('Arduino','Ruta',Arduino);

         //Ventana Crear Proyecto
         WriteInteger ('CreaProyecto','AnchoCol',AnchoCol);
    end;

finally
    MyFile.Free;
end
end;

end.

